!(function (e, n) {
    'object' == typeof exports && 'undefined' != typeof module
        ? (module.exports = n())
        : 'function' == typeof define && define.amd
        ? define(n)
        : ((e = e || self).uni = n())
})(this, function () {
    'use strict'
    try {
        var e = {}
        Object.defineProperty(e, 'passive', {
            get: function () {
                !0
            }
        }),
            window.addEventListener('test-passive', null, e)
    } catch (e) {}
    var n = Object.prototype.hasOwnProperty
    function i(e, i) {
        return n.call(e, i)
    }
    var t = []
    function o() {
        return window.__dcloud_weex_postMessage || window.__dcloud_weex_
    }
    function a() {
        return window.__uniapp_x_postMessage || window.__uniapp_x_
    }
    var r = function (e, n) {
            var i = { options: { timestamp: +new Date() }, name: e, arg: n }
            if (a()) {
                if ('postMessage' === e) {
                    var r = { data: n }
                    return window.__uniapp_x_postMessage
                        ? window.__uniapp_x_postMessage(r)
                        : window.__uniapp_x_.postMessage(JSON.stringify(r))
                }
                var d = {
                    type: 'WEB_INVOKE_APPSERVICE',
                    args: { data: i, webviewIds: t }
                }
                window.__uniapp_x_postMessage
                    ? window.__uniapp_x_postMessageToService(d)
                    : window.__uniapp_x_.postMessageToService(JSON.stringify(d))
            } else if (o()) {
                if ('postMessage' === e) {
                    var s = { data: [n] }
                    return window.__dcloud_weex_postMessage
                        ? window.__dcloud_weex_postMessage(s)
                        : window.__dcloud_weex_.postMessage(JSON.stringify(s))
                }
                var w = {
                    type: 'WEB_INVOKE_APPSERVICE',
                    args: { data: i, webviewIds: t }
                }
                window.__dcloud_weex_postMessage
                    ? window.__dcloud_weex_postMessageToService(w)
                    : window.__dcloud_weex_.postMessageToService(
                          JSON.stringify(w)
                      )
            } else {
                if (!window.plus)
                    return window.parent.postMessage(
                        { type: 'WEB_INVOKE_APPSERVICE', data: i, pageId: '' },
                        '*'
                    )
                if (0 === t.length) {
                    var u = plus.webview.currentWebview()
                    if (!u)
                        throw new Error(
                            'plus.webview.currentWebview() is undefined'
                        )
                    var g = u.parent(),
                        v = ''
                    ;(v = g ? g.id : u.id), t.push(v)
                }
                if (plus.webview.getWebviewById('__uniapp__service'))
                    plus.webview.postMessageToUniNView(
                        {
                            type: 'WEB_INVOKE_APPSERVICE',
                            args: { data: i, webviewIds: t }
                        },
                        '__uniapp__service'
                    )
                else {
                    var c = JSON.stringify(i)
                    plus.webview
                        .getLaunchWebview()
                        .evalJS(
                            'UniPlusBridge.subscribeHandler("'
                                .concat('WEB_INVOKE_APPSERVICE', '",')
                                .concat(c, ',')
                                .concat(JSON.stringify(t), ');')
                        )
                }
            }
        },
        d = {
            navigateTo: function () {
                var e =
                        arguments.length > 0 && void 0 !== arguments[0]
                            ? arguments[0]
                            : {},
                    n = e.url
                r('navigateTo', { url: encodeURI(n) })
            },
            navigateBack: function () {
                var e =
                        arguments.length > 0 && void 0 !== arguments[0]
                            ? arguments[0]
                            : {},
                    n = e.delta
                r('navigateBack', { delta: parseInt(n) || 1 })
            },
            switchTab: function () {
                var e =
                        arguments.length > 0 && void 0 !== arguments[0]
                            ? arguments[0]
                            : {},
                    n = e.url
                r('switchTab', { url: encodeURI(n) })
            },
            reLaunch: function () {
                var e =
                        arguments.length > 0 && void 0 !== arguments[0]
                            ? arguments[0]
                            : {},
                    n = e.url
                r('reLaunch', { url: encodeURI(n) })
            },
            redirectTo: function () {
                var e =
                        arguments.length > 0 && void 0 !== arguments[0]
                            ? arguments[0]
                            : {},
                    n = e.url
                r('redirectTo', { url: encodeURI(n) })
            },
            getEnv: function (e) {
                a()
                    ? e({ uvue: !0 })
                    : o()
                    ? e({ nvue: !0 })
                    : window.plus
                    ? e({ plus: !0 })
                    : e({ h5: !0 })
            },
            postMessage: function () {
                var e =
                    arguments.length > 0 && void 0 !== arguments[0]
                        ? arguments[0]
                        : {}
                r('postMessage', e.data || {})
            }
        },
        s = /uni-app/i.test(navigator.userAgent),
        w = /Html5Plus/i.test(navigator.userAgent),
        u = /complete|loaded|interactive/
    var g =
        window.my &&
        navigator.userAgent.indexOf(
            ['t', 'n', 'e', 'i', 'l', 'C', 'y', 'a', 'p', 'i', 'l', 'A']
                .reverse()
                .join('')
        ) > -1
    var v =
        window.swan && window.swan.webView && /swan/i.test(navigator.userAgent)
    var c =
        window.qq &&
        window.qq.miniProgram &&
        /QQ/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent)
    var p =
        window.tt &&
        window.tt.miniProgram &&
        /toutiaomicroapp/i.test(navigator.userAgent)
    var _ =
        window.wx &&
        window.wx.miniProgram &&
        /micromessenger/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent)
    var m = window.qa && /quickapp/i.test(navigator.userAgent)
    var f =
        window.ks &&
        window.ks.miniProgram &&
        /micromessenger/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent)
    var l =
        window.tt &&
        window.tt.miniProgram &&
        /Lark|Feishu/i.test(navigator.userAgent)
    var E =
        window.jd &&
        window.jd.miniProgram &&
        /micromessenger/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent)
    var x =
        window.xhs &&
        window.xhs.miniProgram &&
        /xhsminiapp/i.test(navigator.userAgent)
    for (
        var S,
            h = function () {
                ;(window.UniAppJSBridge = !0),
                    document.dispatchEvent(
                        new CustomEvent('UniAppJSBridgeReady', {
                            bubbles: !0,
                            cancelable: !0
                        })
                    )
            },
            y = [
                function (e) {
                    if (s || w)
                        return (
                            window.__uniapp_x_postMessage ||
                            window.__uniapp_x_ ||
                            window.__dcloud_weex_postMessage ||
                            window.__dcloud_weex_
                                ? document.addEventListener(
                                      'DOMContentLoaded',
                                      e
                                  )
                                : window.plus && u.test(document.readyState)
                                ? setTimeout(e, 0)
                                : document.addEventListener('plusready', e),
                            d
                        )
                },
                function (e) {
                    if (_)
                        return (
                            window.WeixinJSBridge &&
                            window.WeixinJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener(
                                      'WeixinJSBridgeReady',
                                      e
                                  ),
                            window.wx.miniProgram
                        )
                },
                function (e) {
                    if (c)
                        return (
                            window.QQJSBridge && window.QQJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener(
                                      'QQJSBridgeReady',
                                      e
                                  ),
                            window.qq.miniProgram
                        )
                },
                function (e) {
                    if (g) {
                        document.addEventListener('DOMContentLoaded', e)
                        var n = window.my
                        return {
                            navigateTo: n.navigateTo,
                            navigateBack: n.navigateBack,
                            switchTab: n.switchTab,
                            reLaunch: n.reLaunch,
                            redirectTo: n.redirectTo,
                            postMessage: n.postMessage,
                            getEnv: n.getEnv
                        }
                    }
                },
                function (e) {
                    if (v)
                        return (
                            document.addEventListener('DOMContentLoaded', e),
                            window.swan.webView
                        )
                },
                function (e) {
                    if (p)
                        return (
                            document.addEventListener('DOMContentLoaded', e),
                            window.tt.miniProgram
                        )
                },
                function (e) {
                    if (m) {
                        window.QaJSBridge && window.QaJSBridge.invoke
                            ? setTimeout(e, 0)
                            : document.addEventListener('QaJSBridgeReady', e)
                        var n = window.qa
                        return {
                            navigateTo: n.navigateTo,
                            navigateBack: n.navigateBack,
                            switchTab: n.switchTab,
                            reLaunch: n.reLaunch,
                            redirectTo: n.redirectTo,
                            postMessage: n.postMessage,
                            getEnv: n.getEnv
                        }
                    }
                },
                function (e) {
                    if (f)
                        return (
                            window.WeixinJSBridge &&
                            window.WeixinJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener(
                                      'WeixinJSBridgeReady',
                                      e
                                  ),
                            window.ks.miniProgram
                        )
                },
                function (e) {
                    if (l)
                        return (
                            document.addEventListener('DOMContentLoaded', e),
                            window.tt.miniProgram
                        )
                },
                function (e) {
                    if (E)
                        return (
                            window.JDJSBridgeReady &&
                            window.JDJSBridgeReady.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener(
                                      'JDJSBridgeReady',
                                      e
                                  ),
                            window.jd.miniProgram
                        )
                },
                function (e) {
                    if (x) return window.xhs.miniProgram
                },
                function (e) {
                    return document.addEventListener('DOMContentLoaded', e), d
                }
            ],
            M = 0;
        M < y.length && !(S = y[M](h));
        M++
    );
    S || (S = {})
    var P = 'undefined' != typeof uni ? uni : {}
    if (!P.navigateTo) for (var b in S) i(S, b) && (P[b] = S[b])
    return (P.webView = S), P
})
